package com.faxon.leetcode.f;

import org.junit.Test;

/**
 * @author Faxon
 * @version 1.0
 * @date 2020-04-18 11:07
 * 58. 最后一个单词的长度
 * 给定一个仅包含大小写字母和空格 ' ' 的字符串 s，返回其最后一个单词的长度。如果字符串从左向右滚动显示，那么最后一个单词就是最后出现的单词。
 * 如果不存在最后一个单词，请返回 0 。
 * 说明：一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。
 * 示例:
 * 输入: "Hello World"
 * 输出: 5
 **/
public class LeetCode58 {
    /**
     * 方法一，两次遍历
     * @param s
     * @return
     */
    public int lengthOfLastWord(String s) {
        if (s == null && s.length() == 0) {
            return 0;
        }
        int x = -1, y = -1;
        for (int i = s.length() - 1; i >= 0; i--) {
            if (s.charAt(i) != ' ') {
                x = i;
                break;
            }
        }
        if (x == -1) {
            return 0;
        } else {
            for (int i = x; i >= 0; i--) {
                if (s.charAt(i) == ' ') {
                    y = i;
                    break;
                }
            }
        }
        return x - y;
    }

    /**
     * 优化
     * continue 语句是跳过循环体中剩余的语句而强制执行下一次循环，其作用为结束本次循环，即跳过循环体中下面尚未执行的语句，接着进行下一次是否执行循环的判定
     * @param s
     * @return
     */
    public int lengthOfLastWord2(String s){
        if (s == null && s.length() == 0) {
            return 0;
        }
        int count = 0;
        for (int i = s.length() - 1; i >= 0; i--) {
            if (s.charAt(i) == ' ') {
                if(count==0){
                    continue;
                }else {
                    break;
                }
            }
            count++;
        }
        return count;
    }

    @Test
    public void testLengthOfLastWord() {
        String s = "H el ";
        int i = lengthOfLastWord2(s);
        System.out.println(i);
    }
}
